/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pe.edu.uch.syscom.hibernateSpringDao;

import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.criterion.Restrictions;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import pe.edu.uch.syscom.mapping.TbProveedor;

/**
 *
 * @author Jose Tejada
 */
public class HSProveedorDAOImpl extends HibernateDaoSupport implements HSProveedorDAO {

    public List<TbProveedor> loadListaProveedores( String sCampoBusqueda ) {
        Criteria criteria;
        criteria = this.getSession().createCriteria( TbProveedor.class );
        criteria.add( Restrictions.eq( "activo", 1 ) );

        if ( sCampoBusqueda != null && !sCampoBusqueda.trim().isEmpty() ) {
            sCampoBusqueda = sCampoBusqueda.trim();
            criteria.add( Restrictions.disjunction().
                    add( Restrictions.like( "razonSocial", "%" + sCampoBusqueda + "%" ) ).
                    add( Restrictions.like( "ruc", "%" + sCampoBusqueda + "%" ) ).
                    add( Restrictions.like( "direccion", "%" + sCampoBusqueda + "%" ) ).
                    add( Restrictions.like( "referencia", "%" + sCampoBusqueda + "%" ) ).
                    add( Restrictions.like( "web", "%" + sCampoBusqueda + "%" ) ).
                    add( Restrictions.like( "contacto", "%" + sCampoBusqueda + "%" ) ).
                    add( Restrictions.like( "email", "%" + sCampoBusqueda + "%" ) ) );

        }
        return criteria.list();
    }

    public void actualizarProveedor( TbProveedor tbProveedor ) {
        this.getHibernateTemplate().saveOrUpdate( tbProveedor );
    }

    public TbProveedor findPorId( int iIdProveedor ) {
        return (TbProveedor) this.getSession().get( TbProveedor.class, iIdProveedor );
    }

    public TbProveedor getProveedorPorCampo( String sCampo, String sValor ) {
        return (TbProveedor) this.getSession().
                createCriteria( TbProveedor.class ).
                add( Restrictions.eq( sCampo, sValor ) ).
                add( Restrictions.eq( "activo", 1 ) ).
                uniqueResult();
    }

    public TbProveedor getProveedorPorRuc( String sRuc ) {
        TbProveedor tbProveedor;
        try {
            tbProveedor = getProveedorPorCampo( "ruc", sRuc );
        } catch ( Exception ex ) {
            tbProveedor = null;
        }
        return tbProveedor;
    }

    public void guardarProveedor( TbProveedor tbProveedor ) {
        if ( tbProveedor != null ) {
            this.getSession().save( tbProveedor );
        }
    }
}
